Most efficient coding schemes used for message transmission have the effect that a single-bit error in the received data can turn into a multiple-bit error when decoded. Conventional schemes overcome these multiple-bit errors using cyclic redundancy checks (CRCs). These CRCs take the form of several checking bits transmitted at the end of a message or message packet. So-called data-strobe links, i.e., two wire links which have one wire carrying data and one wire carrying clock signals, carry very short packets, as short as 14 bits for an acknowledgement packet which comprises a ten bit data token (8 bits of data, one parity bit and one flag bit) and a four bit end of packet token (one parity bit, one flag bit and two control bits). Adding a CRC to each packet could at least double the length of the packet.
It is thus more appropriate to consider adding a CRC to a message comprising a plurality of packets rather than to a packet itself. This can be quite efficient, for example a 4 byte CRC could check a message having a length of 4 Kbytes. However, this gives rise to problems when messages are to be routed through a processor network using routing switches. Messages may be transmitted as a plurality of packets, each packet being a self-contained transmissible unit having an address portion or header, a data portion and an end of packet (EOP) indicator. Where the packet is the last packet in a message, this EOP indicator is replaced by an end of message (EOM) indicator. It is known that when routing messages through a network comprising a plurality of routing switches, headers can be altered. In one known routing arrangement, a packet has two headers, one header identifying a logical channel within a remote processor to which the message is to be sent and which remains unaltered until the message reaches its final destination and another header which identifies the terminal link of a network connected to the final destination. In that case, the header identifying the final destination is removed at that processor to reveal the logical channel header.
Where the network comprises a plurality of sub-networks, the packet can be transmitted with a plurality of headers, the first one of which identifies the outgoing link of a first sub-network. When the packet reaches that link, the first header is removed to reveal a second header identifying the outgoing link of a second sub-network. That link could be the terminal link of the final destination or entry into a further sub-network.
For routing within a network or sub-network, each routing switch can be capable of adding a randomly generated header to a packet, the randomly generated header identifying a further routing switch. When the packet reaches the routing switch identified by that header, it is then removed to reveal the original header. These header deletion and addition techniques are described in U.S. Pat. Nos. 5,130,977 (Random Header) and 5,140,583 (Wormhole Routing) the contents of which are herein incorporated by reference. In another message transmission scheme known as asynchronous transfer mode (ATM), headers are altered (or translated) during transmission.
With headers being added, deleted or translated it is very difficult to preserve a CRC on the whole packet including the headers except by stripping it on entry to a routing switch, recomputing it to take into account the new header, and then adding it into the packet on exit. Where the CRC is for a whole message rather than just one packet this is far more difficult to achieve since it requires the storage of information at the routing switch relating to all packets in the message.
Generally, therefore, in the current state of the art, either a check is provided only in respect of the data portion of the packet which will remain unaltered during transmission, or modification of the packet header is not permitted or the CRC must be completely recomputed when the header is modified.
It would be desirable to provide a way of providing a check on a whole packet which readily allows for modification of the packet while it is being transmitted between source and destination nodes.